package co.sumset.validacion;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Clase encargada de la validacion de los datos. 
 * Contiene metodos encargadao de verificar el valor de la informacion.
 *  
 * @author Cristian Raul Pineda Rodriguez 
 *
 */
public class Validacion {

	String cadena;// Establece el valor a analizar


	/**
	 * Metodo que permite determinar si el valor
	 * de una cadena esta formado por letras.
	 * true si esta compuesto por letras y 
	 * false si por lo menos uno de los
	 * caracteres no es una letra. 
	 * 
	 * @param cadena
	 * @return un valor boleano
	 */
	public boolean esLetra(String cadena) {
		Pattern pat = null;
		Matcher mat = null;        
		pat = Pattern.compile("[a-zA-Z]");
		mat = pat.matcher(cadena);
		if (mat.find()) {
			System.out.println("[" + mat.group() + "]");
			return true;
		}else{
			return false;
		}     
	}

	/**
	 * Metodo que permite determinar si el valor
	 * de una cadena esta formado por numeros.
	 * true si esta compuesto por numeros y 
	 * false si por lo menos uno de los
	 * caracteres no es un numero. 
	 * 
	 * @param cadena
	 * @return un valor boleano
	 */
	public boolean esNuemro(String cadena) {
		Pattern pat = null;
		Matcher mat = null;        
		pat = Pattern.compile("[0-9]");
		mat = pat.matcher(cadena);
		if (mat.find()) {
			System.out.println("[" + mat.group() + "]");
			return true;
		}else{
			return false;
		}     
	}

	/**
	 * Metodo que permite determinar si el valor
	 * de una cadena esta formado por numeros y letras.
	 * true si esta compuesto por numeros-letras y 
	 * false si por lo menos uno de los
	 * caracteres no es un numero-letra. 
	 * 
	 * @param cadena
	 * @return un valor boleano
	 */
	public boolean esNumYLetra(String cadena) {
		Pattern pat = null;
		Matcher mat = null;        
		pat = Pattern.compile("[0-9a-zA-Z]");
		mat = pat.matcher(cadena);
		if (mat.find()) {
			System.out.println("[" + mat.group() + "]");
			return true;
		}else{
			return false;
		}     
	}

	/**
	 * Metodo que permite determinar si el valor
	 * de una cadena tiene la forma de un correo electronico (ejemplo123@ejemplo.ej).
	 * true si esta compuesto por la forma de un correo electronico y 
	 * false si por lo menos uno de los
	 * caracteres no tiene la forma de un correo electronico. 
	 * 
	 * @param cadena
	 * @return un valor boleano
	 */
	public boolean esCorreo(String correo) {
		Pattern pat = null;
		Matcher mat = null;        
		pat = Pattern.compile("^([0-9a-zA-Z]([_.w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-w]*[0-9a-zA-Z].)+([a-zA-Z]{2,9}.)+[a-zA-Z]{2,3})$");
		mat = pat.matcher(correo);
		if (mat.find()) {
			System.out.println("[" + mat.group() + "]");
			return true;
		}else{
			return false;
		}        
	}
}
